if __name__ == '__main__':
    """
    第一节
    """
    print("hello_world")

    """
    第二节
    """
    # 这个是单行注释
    """ 
    这个是多行注释
    """
    # 变量学习
    # 变量采用标识符的命名规范,也就是说,
    # java和python的区别就是,java采用的是驼峰,而python采用的是下划线分割
    # java可以使用$命名变量,但是python不行,
    my_name = "Tom"
    my_school = "My School"
    i = 2
    print(my_school + "2")
    i = 1
    print(my_school + "1")
    # 数据类型
    print("==============类型=============")
    a = 1
    print(type(a))
    a = 1.1
    print(type(a))

    a = "这是str"
    print(type(a))
    a = False
    print(type(a))
    a = True
    print(type(a))
    # 列表 ,java 的列表是{}包裹的
    print("列表")
    a = [10, 20, 30, 30]
    print(type(a))
    print((a))
    # 对应的java中的不可变的list,Copy.of生成的,Array.copyOf来的一样
    print("元组")
    a = (10, 20, 30)
    print(type(a))
    # 这个类似于我们java中的set集合,不可以重复元素
    print("集合")
    a = {10, 20, 30, 30}
    print(type(a))
    print((a))
    # java 中的map
    print("字典")
    a = {"key": "value", "key2": "value2"}
    print(type(a))
    print("==============输出=============")
    # 输出
    print("输出字符串 %s" % "str")
    # %06d，表示输出的整数显示位数，不⾜以0补全，超出当前位数则原样输出
    # %.2f，表示⼩数点后显示的⼩数位数。
    print("输出数字 %06d" % 9000000)
    print("输出数字 %06d" % 123)
    print("输出数字 %04d" % 123)
    print("输出浮点 %f" % 11.2)
    print("输出浮点 %.2f" % 11.2)
    print("年龄 %d 姓名 %s" % (11, "王岐山"))
    # 后面推荐用这个方法吧,这样阅读性更加强
    print(f'数字: {11.2},字符: {"123"} ,浮点: {11.2} ')
    # 转义符,和java一样,\t,\n 
    print("这是一行\n 这是二行")
    # 结束符替换
    print("这个结束符变化了,不是回车换行了", end='   ')
    print("111111")
    print()

    """
    第三节
    """
    print("==============输入=============")
    # 输入
    # pwd = input("请输入密码:")
    pwd = '111'
    print(f'你输入的密码为:{pwd}')
    print(type(pwd))
    print("==============类型转换=============")
    num = int('1233')
    print(f'类型转换成的num:{num},type:{type(num)}')
    f = float('111.222')
    print(f'这是一个浮点:{f},type:{type(f)}')
    string = str(111111)
    print(f'string的值为:{string},type:{type(string)}')

    tup = tuple("123456789")
    print(f'tuple表达式转换结果:{tup},type:{type(tup)}')
    list2 = [10, 20, 30]
    print(f'tup 表达式转换结果:{tuple(list2)},type:{type(tuple(list2))}')
    list1 = list("123456789")
    print(f'list表达式转换结果:{list1},type:{type(list1)}')
    tup1 = (10, 20, 30)

    print(f'list表达式转换结果:{list(tup1)},type:{type(list(tup1))}')
    # 这个就是eval表达式,不知道干啥的
    # 将字符串类型转换称为python原本的类型
    print("==============类型转换eval==================")
    test_int = eval('1111111')
    print(f'转换成int{type(test_int)}')
    eval_list = eval('[10,20,30]')
    print(f'列表:{eval_list}')
    print(f'列表:{type(eval_list)}')
    eval_tuple = eval('(10,20,30)')
    print(f'元组:{(eval_tuple)}')
    print(f'元组:{type(eval_tuple)}')

    print("==============运算符的分类=============")
    # 算数运算符
    # 赋值运算符
    # 复合赋值运算符
    # ⽐较运算符
    # 逻辑运算符

    print("整除用//,")
    print(11 / 2)
    print(11 // 2)
    print(f'取余{11 % 2}')

    print("指数 **")
    print(2 ** 4)

    # 多变量赋值
    a = d = 5
    # 复合运算
    c=10
    c+=a
    print(c)
    c-=a
    print(c)
    c*=a
    print(c)
    c/=a
    print(c)
    c//=a 
    print(c)
    c%=a 
    print(c)
    c**=a
    print(c)
    print("==========比较运算符==========================")
    a=7
    b=5
    print(a==b)
    print(a!=b)
    print(a>b)
    print(a<b)
    print(a>=b)
    print(a<=b)
    print("==========逻辑运算符 java的是&& || !==========================")
    print(True and False)
    print(True or False)
    print(not True)
    print("==========逻辑运算符 拓展==========================")
    # and 运算符,只要有一个为0,就是0,否则就是最后一个数字
    print(0 and 1)
    print(0 and 0)
    print(2 and 0 and True)
    print(2 and 3)
    print(3 and 4 and True)
    # or 全部为0 才为0,只要有一个不为0 ,就不为0 ,取第一个非零的数字
    print(0 or 0)
    print(2 or 0)
    print(0 or 3)
    print(2 or 3)
    print(4 or 3)
    pass
